# 导包
import time
from asyncio import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 创建浏览器驱动
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()

# 获取访问页面
driver.get("http://121.43.169.97:8848/pageA.html")

# 放大浏览器
driver.maximize_window()

# 暂停1秒
time.sleep(1)

# 获取用户名：包含部分属性值
driver.find_element(By.XPATH, "//*[contains(@placeholder,'用户名')]").send_keys("admin")
time.sleep(3)

# 点击百度超链接：文本形式
driver.find_element(By.XPATH, "//*[text()='百度']").click()

# 其他选择器
# 利用局部属性值定位元素
# 写法： 标签名[属性名*='局部属性值']
# 获取访问页面
driver.get("http://121.43.169.97:8848/pageA.html")

# 放大浏览器
driver.maximize_window()
time.sleep(1)

# 模拟用户操作
# 获取用户名：
driver.find_element(By.CSS_SELECTOR, "p>input").send_keys("admin")  # 父子关系
driver.find_element(By.CSS_SELECTOR, "form input").send_keys("test")    # 上下级关系
driver.find_element(By.CSS_SELECTOR, "input[id*='pass']").send_keys("123456")   # 元素和

# 属性模糊匹配扩展
# 需求：打开注册页面A，在用户名文本框上点击鼠标右键
# 实例化并获取ActionChains类
action = ActionChains(driver)
cc = action.context_click(driver.find_element_by_css_selector("#userA")).perform()

# 需求：打开注册页面A，输入用户名admin，暂停3秒钟后，双击鼠标左键，选中admin
# 输入用户名admin，暂停3秒
username2 = driver.find_element_by_css_selector("#userA").send_keys("admin")
time.sleep(3)

# 双击鼠标左键，选中admin
# action.double_click(username2).perform()
dc = action.double_click(username2)
dc.perform()

# 等待3秒
time.sleep(3)

# 退出浏览器
driver.close()
from time import sleep
from selenium import webdriver

# 打开浏览器-创建浏览器对象
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 打开浏览器
driver = webdriver.Chrome(executable_path='chromedriver.exe')

# 输入访问地址（URL）
url = r"C:\Users\61783\PycharmProjects\pythonProject\drop.html"
driver.get(url)

# 实例化并获取ActionChains类
action = ActionChains(driver)

# 获取源元素
source = driver.find_element_by_css_selector("#div1")

# 获取目标元素
target = driver.find_element_by_css_selector("#div2")
sleep(3)
action.drag_and_drop(source, target).perform()

# 等待3秒
time.sleep(3)

# 退出浏览器
driver.close()